cabal-version:      2.2
name:               finitary
version:            2.1.3.0
synopsis:           A better, more type-safe Enum.
description:
  Provides a type class witnessing that a type has
  finitely-many inhabitants, as well as its cardinality.
  Also provides an auto-deriving framework using GHC
  Generics, together with a range of instances for existing
  types.

homepage:           https://notabug.org/sheaf/finitary
bug-reports:        https://notabug.org/sheaf/finitary/issues
license:            GPL-3.0-or-later
license-file:       LICENSE.md
author:             Koz Ross
maintainer:         Sam Derbyshire
copyright:          (C) Koz Ross 2019-2020
category:           Data
build-type:         Simple
tested-with:        GHC ==8.6.5 || ==8.8.3 || ==8.10.1 || == 9.0.1
extra-source-files:
  CHANGELOG.md
  README.md
  LICENSE.md

flag bitvec
  description: Include 'bitvec' instances
  default: True
  manual: True

flag vector
  description: Include 'vector-sized' instances
  default: True
  manual: True

source-repository head
  type:     git
  location: git://notabug.org/sheaf/finitary.git

library
  exposed-modules:  Data.Finitary
  other-modules:    Data.Finitary.TH
  build-depends:
    , base
        >= 4.12     && < 5
    , finite-typelits
        >= 0.1.4.2 && < 0.3
    , ghc-typelits-knownnat
       ^>= 0.7.2
    , ghc-typelits-natnormalise
       ^>= 0.7.2
    , template-haskell
       >= 2.14.0.0 && < 3.0.0.0

  if flag(bitvec)
    cpp-options:
      -DBITVEC
    build-depends:
      , bitvec
        >= 1.0.3.0 && < 1.2
  if flag(vector)
    cpp-options:
      -DVECTOR
    build-depends:
      , primitive
         ^>= 0.7.0.1
      , vector
         ^>= 0.12.1.2
      , vector-sized
          >= 1.4.1.0 && < 1.6
      , typelits-witnesses
         ^>= 0.4.0.1

  hs-source-dirs:   src
  ghc-options:
    -Wall -Wcompat -Wincomplete-record-updates
    -Wincomplete-uni-patterns -Wredundant-constraints

  default-language: Haskell2010

test-suite tests
  type:             exitcode-stdio-1.0
  main-is:          Main.hs

  build-depends:
    , base
    , bitvec
    , finite-typelits
    , finitary
    , ghc-typelits-knownnat
    , ghc-typelits-natnormalise
    , hedgehog
        >= 1.0.2 && < 1.3
    , hspec
        >= 2.7.1 && < 3.0
    , hspec-hedgehog
        >= 0.0.1.2 && < 0.2
    , primitive
    , template-haskell
    , typelits-witnesses
    , vector
    , vector-sized

  hs-source-dirs:   test
  ghc-options:
    -Wall -Wcompat -Wincomplete-record-updates
    -Wincomplete-uni-patterns -Wredundant-constraints -O2 -threaded
    -with-rtsopts=-N

  default-language: Haskell2010
